1. Field of the Inventions
The invention relates to management of computer system and, more particular, to instantiations and state management of computer servers and systems.
2. Description of the Related Art
A computer system is commonly comprised of two primary components: (1) a processing element that includes temporary random memory, one or more computer processing units (CPU), and input/output (I/O) capabilities; and (2) persistent storage, typically implemented as a hard disk drive generally referred to as “disk drives” or simply as “disks.” One example is a server with its related storage. A computer system's storage is generally classified into two types: (1) program codes that contain the programming instructions executed by its CPU that is, the operating system and applications that use that operating system; and (2) persistent storage needed by the operating system and applications, such as e-mail storage, websites and database systems.
This simplified description illustrates that a computer system typically needs all of these parts to act together at one time. The persistent copy of the operating system and applications define what a computer system does and how it does it. For example, on-line store. The persistent storage used by those applications, in turn, will determine the identity of the store, such as whether the on-line store is a luxury retailer or a wholesale supply house, and its inventory and pricing.
Previously, the processing elements and disk subsystems were typically bound closely together. This was determined primarily by the need to cost effectively access disks with good performance from the processing system. This style of connecting storage to processor is generally known as directly attached storage. An implication of this interconnect style is that an entire system would run a single set of applications on a particular operating system with a particular data set. Examples of such systems are the desktop computers and servers that will be familiar to those skilled in the art.
Currently there are much more flexible techniques for connecting computer storage and processors. Many of the storage devices can be accessed by many processing systems through a network. Systems that present block level disk devices across the network are generally known as storage area networks (SANs). These SAN implementations have become increasingly common since the late 1990s. Prior to that, storage would typically be made available over networks using relatively high level file or database access protocols. When the dedicated servers or appliances are used as file servers, that approach is often referred as network attached storage (NAS).
The block level or SAN approach is typically the more flexible and higher performance approach. One reason SANs are more flexible is because computer systems are constructed to start-up, or boot, in a series of steps. The earlier steps in the boot sequence usually only deal with block level devices. In the later steps where the operating system is loaded onto the processing element, the operating system itself will generally define its own preferred structures, such as a file or database system, on a block level device.
Installing the persistent copy of the operating system on a processing element can be a rather complicated process that is labor-intensive and typically requires specialized computer system expertise. This is complicated by current computing environments. For example, servers today are commonly available in what are called blade or rack environments. In a rack environment, a series of thin servers are located in a rack. In a blade environment, a series of processing elements on individual blades are contained in a chassis, with a rack often containing multiple chassis. The high density leads to great physical management issues, particularly if a system fails. Further, if direct attached storage is used on each of these systems, the available storage space may be limited and the management issues are greatly increased as disk drives are a high failure item. In addition to the physical management issues, the logical management issues are also very complicated. When there may be hundreds of these servers either in blade or rack format, keeping track of applications assigned to each server becomes formidable.
While SANs are very flexible in providing a great deal of high-performance storage, actually managing and interconnecting the servers and storage units can be a relatively complicated operation. Zones need to be properly arranged, LUNs (Logical Unit Numbers) need to be properly organized and defined and so on. In a larger environment there could be hundreds of servers as noted above, and literally thousands of LUNs available from the various storage devices, all on different portions of the SAN. The mapping between the various items can be horribly complex and very difficult and time consuming. Further, it can be highly error prone. Therefore methods and techniques to develop and simplify the management and deployment of servers and related storage, especially in enterprise environments, are highly desirable.